package com.fudan.backend.service;

import com.fudan.backend.exception.RetCode;
import com.fudan.backend.pojo.Address;

import java.util.List;

public interface AddressService {
    /**
     * 获取用户收获地址，仅能本人访问
     *
     * @param addressId 地址id
     * @param userId    用户id
     */
    Address getAddressByAddressId(String addressId, String userId);

    /**
     * 获取默认地址
     *
     * @param userId 用户id
     */
    Address getDefaultAddress(String userId);

    /**
     * 获取用户所有地址
     *
     * @param userId 用户id
     */
    List<Address> getAllUserAddress(String userId);

    /**
     * 更改用户默认地址，会判断是否为同一用户的地址，并使用事务维护一致性
     *
     * @param addressId 设定为默认的地址id
     * @param userId    用户id
     */
    RetCode changeDefaultAddress(String addressId, String userId);

    /**
     * 新增收获地址
     */
    RetCode addAddress(Address address, String userId);

    /**
     * 删除地址，会做权限判断
     *
     * @param addressId 删除的地址
     * @param userId 请求的用户
     */
    RetCode deleteAddress(String addressId, String userId);

    /**
     * 修改地址，做权限判断
     */
    RetCode changeAddress(Address address, String userId);
}
